package lib

//link to 621
func init() {
	Probs = append(Probs, Problem{
		Num:         1953,
		Discription: "给定一组项目及对应的完成所需工时，一周只能用一个工时，相邻两周不能做同一个项目，否则工作停止，最多做几周",
		Level:       2,
		Labels: map[string]int{
			"贪心": 1,
		},
	})
}

//众数贪心
//短板是所需工时最长的项目
//找到所需工时最长的项目（比如4），排成：1 . 1 . 1 . 1，看能不能用其它项目的工时填满.
//若loggest<=rest+1，则可以填满，所有项目都能完成
//否则只能完成2*rest+1
func NumberOfWeeks(milestones []int) int64 {
	loggest := 0
	others := int64(0)
	for i := range milestones {
		loggest = max(loggest, milestones[i])
		others += int64(milestones[i])
	}
	others -= int64(loggest)

	if int64(loggest) > others+1 {
		return 2*others + 1
	}

	return int64(loggest) + others
}
